﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Biblioteca.Utils;
using SERIX.Util;
using System.Data.OracleClient;
using System.Data;
using SERIX.Classes;
using Pms.Utils;


namespace SERIX
{
    /*
     * Autor      : IT-Developer1
     * Data       : 02/04/2010 11:03:48
     * Descricao  : 
     * Alteracoes : 
     * 
     */
    public partial class BeneficiariosManut : Seguranca
    {
        string _operacao;
        string _idt;
        string _idtConjuge = "";
        string _idtOrgao;
        string _tpoBenef;
      

        protected void Page_Load(object sender, EventArgs e)
        {
            
           //ContainerBeneficiario.NamingContainer.
            base.OnLoad(e);            
            string login = UsuAut.Login;
            _operacao = Request["OP"];
            if (!String.IsNullOrEmpty(Request["idt"]))
            {
                _idt = Server.UrlDecode(Criptografia.Descriptografar(Request["idt"].ToString().Replace(" ","+")));
                _idtConjuge = CBeneficiarios.PesquisaporCodigo(_idt, login, false).Idt_Conjuge;
            }

            
            if (!Page.IsPostBack || Session["desabilitamasterpage"] != null)
            {                
                BiblioSERIX.PreencherDdl(ref ddlMunicipioRes, CMunicipios.ObterTodos(UsuAut.Login), "NOME_MUN", "IDT_MUN");
                BiblioSERIX.PreencherDdl(ref ddlMunicipioCom, CMunicipios.ObterTodos(UsuAut.Login), "NOME_MUN", "IDT_MUN");
                BiblioSERIX.PreencherDdl(ref ddlTipoBenef, CTiposBeneficiarios.ObterTodos(UsuAut.Login), "DSC_TPO_BENEF", "IDT_TPO_BENEF");
                switch (_operacao)
                {
                    case "E":
                        {
                            string idt_evolucao = Criptografia.Descriptografar(Request["evolucao"].Replace(" ","+"));                            
                            CBeneficiarios dao = CBeneficiarios.PesquisaporCodigo(idt_evolucao, UsuAut.Login, true);
                            CConjuge obj = CConjuge.PesquisarPorCodigo(idt_evolucao, usuAut.Login, true);
                            CarregaDados(dao, obj);
                            VerificaEstadoCivil(); 
                            DesabilitaControles();
                            TabBeneficiarios.Visible = true;
                            TabInfo.Visible = false;                           
                            Cancelar_Button.Visible = false;                            
                            break;
                        }
                    case "R":
                        {  
                            lbNome.Visible = true;
                            lbnomebenef.Visible = true;
                            TabBeneficiarios.Visible = true;
                            CBeneficiarios dao = CBeneficiarios.PesquisaporCodigo(_idt, login, false);
                            CConjuge obj = CConjuge.PesquisarPorCodigo(dao.Idt_Conjuge, UsuAut.Login, false);
                            lbnomebenef.Text = dao.Nom_benef;                            
                            CarregaDados(dao, obj);
                            VerificaEstadoCivil(); 
                            DesabilitaControles();                           
                            break;
                        }
                    case "U":
                        {
                            cbEvolucao.Visible = true;
                            ddlMunicipioNas.Enabled = true;
                            //ControlAtivar1.Visible = true;                            
                            CStatus objeto = new CStatus("2", _idt, UsuAut.Login);
                            if (objeto.status == "I")
                            {
                                DesabilitaControles();
                                TabBeneficiarios.Visible = false;
                            }
                            TabBeneficiarios.Visible = true;
                            lbNome.Visible = true;
                            lbnomebenef.Visible = true;
                            CBeneficiarios dao = CBeneficiarios.PesquisaporCodigo(_idt, login, false);
                            CConjuge obj = CConjuge.PesquisarPorCodigo(dao.Idt_Conjuge, UsuAut.Login, false);
                            lbnomebenef.Text = dao.Nom_benef;
                            //habilita ou não o botão propriedades                            
                            if (dao.Cond_Produtor != null && dao.Cond_Produtor !="999")
                            {
                                btnPropriedades.Visible = true;
                                ddlCondProd.Enabled = true; 
                                ddlCondProd.DataBind();  
                            }                            
                            CarregaDados(dao, obj);
                            VerificaEstadoCivil(); 
                            Session["tirarvinc"] = dao.Cond_Produtor;                           
                            break;

                        }
                    case "I":
                        {
                            TabInfo.Visible = false;
                            //lblTitulo.Text = "Inserção do Beneficiário";
                            break;
                        }
                    case "D":
                        {
                            //lblTitulo.Text = "Exclusão do Beneficiário";
                            CBeneficiarios dao = CBeneficiarios.PesquisaporCodigo(_idt, login, false);
                            CConjuge obj = CConjuge.PesquisarPorCodigo(dao.Idt_Conjuge, UsuAut.Login, false);
                            CarregaDados(dao,obj);
                            VerificaEstadoCivil(); 
                            DesabilitaControles();
                            break;
                        }
                    default: break;
                        
                }
               
            }
          
        }

        private void CarregaDados(CBeneficiarios dao, CConjuge obj)
        {
            _tpoBenef = dao.Idt_tpo_benef;

            //Dados Principais.
            txtNome.Text = dao.Nom_benef;
            txtApelido.Text = dao.Apelido;
            txtRg.Text = dao.Rg;
            txtCpf.Text = dao.Cpf;
            txtDataNasc.Text = dao.Dat_nasc;
            ddlSexo.SelectedValue = dao.Sexo;
            ddlEstadoCivil.SelectedValue = dao.Estado_civil;
            txtCertNasc.Text = dao.Cert_nasc;                      
            ddlEscolaridade.SelectedValue = dao.Escolaridade;
            ddlTipoBenef.SelectedValue = dao.Idt_tpo_benef;            
            txtDatAssist.Text = dao.Dat_Assist;
            txtOrgaoExped.Text = dao.Orgao_Exped;                     
            txtNroFilhos.Text = dao.Nro_Filhos;
            txtEnderecoCom.Text = dao.Endereco_Com;
            txtComplCom.Text = dao.Compl_Com;
            txtBairroCom.Text = dao.Bairro_Com;
            txtCepCom.Text = dao.Cep_Com;
            BiblioSERIX.PreencherDdl(ref ddlCondProd, CTiposVincPropriedades.ObterTodos(UsuAut.Login), "DSC_VINC_PROP", "IDT_VINC_PROP");
            ddlCondProd.SelectedValue = dao.Cond_Produtor;
            HabilitaRFV(false);
            ddlCondProd.SelectedValue = dao.Cond_Produtor;
            txtDatainicio.Text = dao.dat_Inicio;
            if (dao.Uf_Nasc != "")
            {
                ddlUf.SelectedValue = dao.Uf_Nasc;
                BiblioSERIX.PreencherDdl(ref ddlMunicipioNas, CMunicipios.ObterPorUF(dao.Uf_Nasc, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                ddlMunicipioNas.SelectedValue = dao.Munic_Nasc;
                ddlMunicipioNas.Enabled = true;
            }

            //Dados de Endereço.
            txtEndereco.Text = dao.Endereco;
            txtComplemento.Text = dao.Complemento;
            txtBairro.Text = dao.Bairro;
            txtCep.Text = dao.Cep;
            txtNumero.Text = dao.Numero;
            tbNumeroCom.Text = dao.Numero_com;
            if (dao.Cidade != "")
            {
                ddlMunicipioCom.SelectedValue = dao.Cidade;
                BiblioSERIX.PreencherDdl(ref ddlComunidadeCom, CComunidades.ObterPorIDT_MUN(dao.Cidade, UsuAut.Login), "NOME_COM", "IDT_COM");
                ddlComunidadeCom.SelectedValue = dao.Povoado_Com;
                ddlComunidadeCom.Enabled = true;
            }
            if (dao.Idt_mun != "")
            {
                ddlMunicipioRes.SelectedValue = dao.Idt_mun;
                BiblioSERIX.PreencherDdl(ref ddlComunidade, CComunidades.ObterPorIDT_MUN(dao.Idt_mun, UsuAut.Login), "NOME_COM", "IDT_COM");
                ddlComunidade.SelectedValue = dao.Idt_com;
                ddlComunidade.Enabled = true;
            }

            tbUf.Text = dao.Uf;

           //Dados Contatos.
            txtEmail.Text = dao.Email;
            txtEmail2.Text = dao.Email_2;
            txtTelefone1.Text = dao.Fone1;
            txtTelefone2.Text = dao.Fone2;
            txtTelefone3.Text = dao.Fone3;
            txtCelular1.Text = dao.Celular_1;
            txtCelular2.Text = dao.Celular_2;
            txtTelComercial.Text = dao.Tel_Comercial;   

            //Dados do TabConjuge.
            if (obj.Idt_conjuge != null)
            {
                tbAPELIDO_CONJUGE.Text = obj.Apelido_conjuge;
                tbCPF_CONJUGE.Text = obj.CPF_conjuge;
                tbDATANASC_CONJUGE.Text = obj.DataNasc_conjuge;
                tbNOME_CONJUGE.Text = obj.Nome_conjuge;
                tbRG_CONJUGE.Text = obj.RG_conjuge;
                ddlESCOLARIDADE_CONJUGE.SelectedValue = obj.Escolaridade_conjuge;
                ddlUFNASC_CONJUGE.SelectedValue = obj.UFNasc_conjuge;
                BiblioSERIX.PreencherDdl(ref ddlMUNNASC_CONJUGE, CMunicipios.ObterPorUF(obj.UFNasc_conjuge, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                ddlMUNNASC_CONJUGE.SelectedValue = obj.MunNasc_conjuge;
                ddlMUNNASC_CONJUGE.Enabled = true;
                rblSEXO_CONJUGE.SelectedValue = obj.Sexo_conjuge;
            }
            
        }

        protected void DesabilitaControles()
        {
            BiblioSERIX.DesabilitaControle(txtNome);
            BiblioSERIX.DesabilitaControle(txtApelido);
            BiblioSERIX.DesabilitaControle(txtRg);
            BiblioSERIX.DesabilitaControle(txtCpf);
            BiblioSERIX.DesabilitaControle(txtDataNasc);
            txtDataNascCalendar.Enabled = false;
            BiblioSERIX.DesabilitaControle(ddlSexo);
            BiblioSERIX.DesabilitaControle(ddlEstadoCivil);

            BiblioSERIX.DesabilitaControle(ddlTipoBenef);
            BiblioSERIX.DesabilitaControle(txtNroFilhos);
            BiblioSERIX.DesabilitaControle(ddlCondProd);
            BiblioSERIX.DesabilitaControle(txtCertNasc);
            BiblioSERIX.DesabilitaControle(ddlEscolaridade);
            BiblioSERIX.DesabilitaControle(txtEmail);
            BiblioSERIX.DesabilitaControle(txtEmail2);

            BiblioSERIX.DesabilitaControle(txtEndereco);
            BiblioSERIX.DesabilitaControle(txtNumero);
            BiblioSERIX.DesabilitaControle(txtComplemento);
            BiblioSERIX.DesabilitaControle(txtBairro);
            BiblioSERIX.DesabilitaControle(txtCep);
            BiblioSERIX.DesabilitaControle(ddlMunicipioRes);
            BiblioSERIX.DesabilitaControle(tbUf);
            BiblioSERIX.DesabilitaControle(txtTelefone1);
            BiblioSERIX.DesabilitaControle(txtTelefone2);
            BiblioSERIX.DesabilitaControle(txtTelefone3);
            BiblioSERIX.DesabilitaControle(txtCelular1); 
            BiblioSERIX.DesabilitaControle(txtCelular2);
            BiblioSERIX.DesabilitaControle(txtTelComercial);
            //Data and Calendar
            //BiblioSERIX.DesabilitaControle(txtDatExpedicao);
            //txtDatExpedicaoCalendar.Enabled = false;
            BiblioSERIX.DesabilitaControle(txtDatAssist);
            txtDatAssistCalendar.Enabled = false;

            BiblioSERIX.DesabilitaControle(txtOrgaoExped);
            BiblioSERIX.DesabilitaControle(ddlMunicipioNas);            
            BiblioSERIX.DesabilitaControle(ddlUf);
            BiblioSERIX.DesabilitaControle(txtEnderecoCom);
            BiblioSERIX.DesabilitaControle(txtComplCom);
            BiblioSERIX.DesabilitaControle(txtBairroCom);
            BiblioSERIX.DesabilitaControle(txtCepCom);
            BiblioSERIX.DesabilitaControle(ddlMunicipioCom);
            BiblioSERIX.DesabilitaControle(ddlComunidadeCom);
            BiblioSERIX.DesabilitaControle(txtDatainicio);
            BiblioSERIX.DesabilitaControle(ddlComunidade);
            BiblioSERIX.DesabilitaControle(tbNumeroCom);

            //Conjuge
            BiblioSERIX.DesabilitaControle(tbNOME_CONJUGE);
            BiblioSERIX.DesabilitaControle(tbAPELIDO_CONJUGE);
            BiblioSERIX.DesabilitaControle(tbCPF_CONJUGE);
            BiblioSERIX.DesabilitaControle(tbDATANASC_CONJUGE);
            BiblioSERIX.DesabilitaControle(tbRG_CONJUGE);
            BiblioSERIX.DesabilitaControle(ddlUFNASC_CONJUGE);
            BiblioSERIX.DesabilitaControle(ddlMUNNASC_CONJUGE);
            BiblioSERIX.DesabilitaControle(ddlESCOLARIDADE_CONJUGE);
            rblSEXO_CONJUGE.Enabled = false;
            tbDATANASC_CONJUGE_CalendarExtender.Enabled = false;
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            HabilitaRFV(true);
            #region métodos inserir alterar excluir
            try
            {                
                string login = UsuAut.Login;
                SetDados(login);
                CConjuge obj = null;
                CBeneficiarios dao = (CBeneficiarios)ViewState["Beneficiario"];
                ViewState.Remove("Beneficiario");
                if (_idtConjuge != "")
                {
                    obj = (CConjuge)ViewState["Conjuge"];
                    ViewState.Remove("Conjuge");
                }
                switch (_operacao)
                {    
                    case "E":
                        {
                            Response.Redirect("Historico.aspx?idt=" + Request["idt"]);
                            break;
                        }
                    case "I":
                        {                            
                            dao.Inserir(login,false);
                            if (_idtConjuge != "")
                            {
                                obj.Inserir(UsuAut.Login, false);
                            }
                            BensBeneficiario("B", ref GridBens,false,"0");
                            BensBeneficiario("M", ref GridMaquinas, false, "0");
                            CLogCadastro LogCadastro = new CLogCadastro();
                            LogCadastro = LogCadastro.Inserir("2", UsuAut.Login, dao.Idt_benef);  
                            //CHAMAR METÓDOS PARA GRAVAR A "EVOLUÇÃO"
                            CBeneficiarios Evol = CBeneficiarios.PesquisaporCodigo(dao.Idt_benef, usuAut.Login, false);
                            Evol.Idt_Evolucao = CBeneficiarios.ObterIdtEvolucao();
                            Evol.Cpf = Biblio.DesformateCPF(Evol.Cpf);
                            Evol.data_primeira = LogCadastro.Log_Primeiro;
                            Evol.data_ultima = LogCadastro.Log_Ultima;
                            Evol.User_primeira = LogCadastro.Usuario_Ini;
                            Evol.User_ultima = LogCadastro.Usuario_fim;
                            Evol.Inserir(usuAut.Login, true);
                            BensBeneficiario("B", ref GridBens, true, Evol.Idt_Evolucao);
                            BensBeneficiario("M", ref GridMaquinas, true, Evol.Idt_Evolucao);
                            
                            if (_idtConjuge != "")
                            {
                                obj.Idt_Evolucao = Evol.Idt_Evolucao;
                                obj.Inserir(UsuAut.Login, true);
                            }
                            //Redireciona para Cadastrar a Propriedade direto
                            if (ddlCondProd.Enabled == true && (ddlCondProd.Text == "1" ||ddlCondProd.Text == "4"))
                            {
                                Response.Redirect("PropriedadesManut.aspx?OP=I&idt_benef_vinc="+Criptografia.Criptografar(dao.Idt_benef)+"&cond_prod="+Criptografia.Criptografar(ddlCondProd.Text));
                            }//Redireciona para fazer uma busca entre as propriedades e depois sim, vincular
                            else if (ddlCondProd.Enabled == true && (ddlCondProd.Text == "2" || ddlCondProd.Text == "3" || ddlCondProd.Text == "5" || ddlCondProd.Text == "6" || ddlCondProd.Text == "7" || ddlCondProd.Text == "8"))
                            {
                                Response.Redirect("Propriedades.aspx?idt_benef_vinc=" + Criptografia.Criptografar(dao.Idt_benef) + "&cond_prod=" + Criptografia.Criptografar(ddlCondProd.SelectedValue.ToString()));
                            }//Retorna para o grid de beneficiarios
                            else { Response.Redirect("Beneficiarios.aspx"); }
                            
                            break;
                        }
                    case "U":
                        {  
                            if (_idtConjuge != "")
                            {
                                string ConjugeComparador = CBeneficiarios.PesquisaporCodigo(_idt, login, false).Idt_Conjuge;
                                //caso de primeira inserção;
                                if (_idtConjuge[_idtConjuge.Length - 1] == '#')
                                {
                                    _idtConjuge = _idtConjuge[0].ToString();
                                    obj.Idt_conjuge = _idtConjuge;
                                    dao.Idt_Conjuge = _idtConjuge;
                                    dao.Alterar(login);
                                    obj.Inserir(login, false);
                                }//caso de separação ou algo parecido
                                else if(TabConjuge.Visible == false && tbCPF_CONJUGE.Text != "")
                                {
                                    dao.Idt_Conjuge = "";
                                    dao.Alterar(login);
                                    CConjuge.Desativar(CConjuge.PesquisarPorCPF(tbCPF_CONJUGE.Text, UsuAut.Login).Idt_conjuge);
                                }//caso de atualização
                                else if (TabConjuge.Visible != false)
                                {
                                    dao.Alterar(login);
                                    obj.Alterar(login);
                                    CConjuge.Ativar(obj.Idt_conjuge);
                                }                                
                            }else
                            {
                                dao.Alterar(login);
                            }
                            BensBeneficiario("B", ref GridBens, false, "0");
                            BensBeneficiario("M", ref GridMaquinas, false, "0");
                            CLogCadastro LogCadastro = new CLogCadastro();                          
                            LogCadastro = LogCadastro.Alterar("2", UsuAut.Login, dao.Idt_benef);
                            if (cbEvolucao.Checked == true)
                            {
                                dao = CBeneficiarios.PesquisaporCodigo(dao.Idt_benef, usuAut.Login, false);
                                dao.Idt_Evolucao = CBeneficiarios.ObterIdtEvolucao();
                                dao.data_primeira = LogCadastro.Log_Primeiro;
                                dao.data_ultima = LogCadastro.Log_Ultima;
                                dao.User_primeira = LogCadastro.Usuario_Ini;
                                dao.User_ultima = LogCadastro.Usuario_fim;
                                dao.Cpf = BiblioSERIX.RemoveCharsEspeciais(dao.Cpf);
                                dao.Inserir(UsuAut.Login, true);
                                BensBeneficiario("B", ref GridBens, true, dao.Idt_Evolucao);
                                BensBeneficiario("M", ref GridMaquinas, true, dao.Idt_Evolucao);
                                if (ddlEstadoCivil.SelectedValue.Equals("C") || ddlEstadoCivil.SelectedValue.Equals("U"))
                                {
                                    obj = CConjuge.PesquisarPorCodigo(dao.Idt_Conjuge, usuAut.Login, false);
                                    obj.Idt_Evolucao = dao.Idt_Evolucao;
                                    obj.Inserir(UsuAut.Login, true);
                                 }
                            }
                            Response.Redirect("Beneficiarios.aspx");                    
                            break;
                        }
                    case "D":
                        {
                            dao.Excluir(login);
                            Response.Redirect("Beneficiarios.aspx");
                            break;
                        }
                    case "R":
                        {                            
                            Response.Redirect("Beneficiarios.aspx");
                            break;
                        }
                    default: break;
                }                                
            }
            catch (Exception ex)
            {
                 lblMensagem.Text = "*Erro: " + ex.Message;
                //lblErro.Visible = true;
            }
            #endregion

            
        }

        private void SetDados(string login)
        {
            //No Inserir, cria idt_benef e idt_conjuge se preciso
            if (String.IsNullOrEmpty(_idt) && _operacao[0].Equals('I'))
            {
                _idt = CBeneficiarios.ObterNovoIdt(login).ToString();
                if (TabConjuge.Visible == true)
                {
                    _idtConjuge = CConjuge.ObterNovoIdt();
                }
                else
                {
                    _idtConjuge = "";
                }
            }
            //No Editar, idt_conjuge se preciso
            if(ViewState["idt_conjuge"] != null)
            {
                _idtConjuge = ViewState["idt_conjuge"].ToString();
            }
            if (String.IsNullOrEmpty(_idtConjuge) && _operacao[0].Equals('U'))
            {
                if (TabConjuge.Visible == true)
                {
                    _idtConjuge = CConjuge.ObterNovoIdt();
                    _idtConjuge += "#";
                }
                else
                {
                    _idtConjuge = "";
                }
            }

            //preenchendo objetos
            CBeneficiarios dao = new CBeneficiarios(_idt, ddlTipoBenef.SelectedItem.Value, txtDataNasc.Text, ddlSexo.SelectedValue,
                ddlEstadoCivil.SelectedValue, ddlEscolaridade.SelectedValue, (ddlTipoBenef.SelectedValue != "1" & ddlTipoBenef.SelectedValue != "4" & ddlTipoBenef.SelectedValue != "10" & ddlTipoBenef.SelectedValue != "11")?"999":ddlCondProd.SelectedValue,
                Biblio.TirarAcentos(txtNome.Text.ToUpper()), Biblio.TirarAcentos(txtApelido.Text.ToUpper()), Biblio.TirarAcentos(txtEndereco.Text.ToUpper()), txtNumero.Text, Biblio.TirarAcentos(txtBairro.Text.ToUpper()), Biblio.TirarAcentos(txtComplemento.Text.ToUpper()),
                ddlMunicipioCom.SelectedValue, tbUf.Text, txtCep.Text, BiblioSERIX.RemoveCharsEspeciais(txtCpf.Text),
                txtRg.Text, txtCertNasc.Text, txtEmail.Text, BiblioSERIX.RemoveCharsEspeciais(txtTelefone1.Text), BiblioSERIX.RemoveCharsEspeciais(txtTelefone2.Text), BiblioSERIX.RemoveCharsEspeciais(txtTelefone3.Text),
                BiblioSERIX.RemoveCharsEspeciais(txtCelular1.Text), BiblioSERIX.RemoveCharsEspeciais(txtCelular2.Text), BiblioSERIX.RemoveCharsEspeciais(txtTelComercial.Text), txtEmail2.Text, txtDatAssist.Text, txtNroFilhos.Text,
                ddlMunicipioNas.SelectedValue, ddlUf.SelectedValue, Biblio.TirarAcentos(txtEnderecoCom.Text.ToUpper()), Biblio.TirarAcentos(txtComplCom.Text.ToUpper()), Biblio.TirarAcentos(txtBairroCom.Text.ToUpper()), txtCepCom.Text,
                ddlMunicipioRes.SelectedValue, ddlComunidadeCom.SelectedValue, DateTime.Now.ToString(), Biblio.TirarAcentos(txtOrgaoExped.Text.ToUpper()), null, txtDatainicio.Text,ddlComunidade.SelectedValue, tbNumeroCom.Text,_idtConjuge);
                ViewState["Beneficiario"] = dao;

                if (TabConjuge.Visible == true)
                {
                    CConjuge obj = new CConjuge(_idtConjuge.Replace("#", ""), tbCPF_CONJUGE.Text, tbDATANASC_CONJUGE.Text, ddlESCOLARIDADE_CONJUGE.SelectedValue, tbAPELIDO_CONJUGE.Text, ddlMUNNASC_CONJUGE.SelectedValue, tbNOME_CONJUGE.Text, tbRG_CONJUGE.Text, rblSEXO_CONJUGE.SelectedValue, ddlUFNASC_CONJUGE.SelectedValue,"",ddlEstadoCivil.SelectedValue);
                    ViewState["Conjuge"] = obj;
                }

        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("Beneficiarios.aspx");
        }

        /// <summary>
        /// Verifica quais campos são obrigatórios segundo o cadastro de tipo de beneficiario.
        /// </summary>
        /// <param name="stop"></param>
        private void HabilitaRFV(bool stop)
        {
            OracleConnection conexao = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            string query = @"SELECT * FROM SRX_TIPOS_BENEFICIARIOS WHERE IDT_TPO_BENEF = '" + ddlTipoBenef.SelectedItem.Value + "'";
            OracleCommand comando = new OracleCommand(query, conexao);

            try
            {
                conexao.Open();
                OracleDataReader read = comando.ExecuteReader();

                while (read.Read())
                {
                    if (read["PROP_OBR"].ToString() == "V")
                    {
                        ddlCondProd.Enabled = true;
                        rqfCondProd.Enabled = true;
                        if (stop == false)
                        {
                            BiblioSERIX.PreencherDdl(ref ddlCondProd, CTiposVincPropriedades.ObterTodos(UsuAut.Login), "DSC_VINC_PROP", "IDT_VINC_PROP");
                        }
                    }else if(read["prop_obr"].ToString() == "F")
                    {
                        ddlCondProd.Enabled = false;
                        rqfCondProd.Enabled = false;
                        ddlCondProd.SelectedIndex = 0;
                    }


                    if (read["CPF_OBR"].ToString() == "V")
                    {
                        rfvCpf.Enabled = true;
                    }
                    else if (read["CPF_OBR"].ToString() == "F")
                    {
                        rfvCpf.Enabled = false;
                    }

                    if (read["RG_OBR"].ToString() == "V")
                    {
                        rfvRg.Enabled = true;
                    }
                    else if (read["RG_OBR"].ToString() == "F")
                    {
                        rfvRg.Enabled = false;
                    }

                    if (read["CERT_OBR"].ToString() == "V")
                    {
                        rfvCert.Enabled = true;
                    }
                    else if (read["CERT_OBR"].ToString() == "F")
                    {
                        rfvCert.Enabled = false;
                    }


                    conexao.Close();
                    break;
                }

            }
            catch
            {
                conexao.Close();
            }
        }
       
        protected void ddlTipoBenef_TextChanged(object sender, EventArgs e)
        {
            HabilitaRFV(false);
        }      
               
        /// <summary>
        /// Evento que leva o Produtor para as suas propriedades.
        /// </summary>        
        protected void btnPropriedade_Click(object sender, EventArgs e)
        {
            Session["desabilitamasterpage"] = "V";
            if (ddlCondProd.SelectedValue!= "1" || ddlCondProd.SelectedValue != "4")
            {
                Response.Redirect("Propriedades.aspx?OP=" + _operacao + "&idt=" + Request["idt"] + "&cond_prod=" + Criptografia.Criptografar(ddlCondProd.SelectedValue));
            }
            else
            {
                Response.Redirect("Propriedades.aspx?OP=" + _operacao + "&idt=" + Request["idt"]);
            }
        }
        
        protected void txtCpf_TextChanged(object sender, EventArgs e)
        {
            if (ContainerBeneficiario.TabIndex == 0)
            {
                lblMensagem.Text = "";
                CBeneficiarios obj = CBeneficiarios.PesquisarCpf(txtCpf.Text, UsuAut.Login);

                if (obj.Idt_benef != null && Biblio.DesformateCPF(obj.Cpf) == txtCpf.Text)
                {
                    txtCpf.Text = "";
                    lblMensagem.Text = "CPF JÁ CADASTRADO";
                }
                else if (obj.Idt_benef == null)
                {
                    if (Biblio.ValidaCPF(txtCpf.Text))
                    {
                        CConjuge dao = CConjuge.PesquisarPorCPF(txtCpf.Text, UsuAut.Login);
                        if (dao.Idt_conjuge != null)
                        {
                            txtNome.Text = dao.Nome_conjuge;
                            txtApelido.Text = dao.Apelido_conjuge;
                            txtDataNasc.Text = dao.DataNasc_conjuge;
                            ddlUf.SelectedValue = dao.UFNasc_conjuge;
                            ddlMunicipioNas.Enabled = true;
                            BiblioSERIX.PreencherDdl(ref ddlMunicipioNas, CMunicipios.ObterPorUF(dao.UFNasc_conjuge, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                            ddlMunicipioNas.SelectedValue = dao.MunNasc_conjuge;
                            txtRg.Text = dao.RG_conjuge;
                            ddlEscolaridade.SelectedValue = dao.Escolaridade_conjuge;
                            ddlSexo.SelectedValue = dao.Sexo_conjuge;
                            ddlEstadoCivil.SelectedValue = dao.Situacao;
                            TabConjuge.Visible = true;

                            CBeneficiarios Benef = CBeneficiarios.PesquisarPorConjuge(dao.Idt_conjuge);
                            tbNOME_CONJUGE.Text = Benef.Nom_benef;
                            tbDATANASC_CONJUGE.Text = Benef.Dat_nasc;
                            tbAPELIDO_CONJUGE.Text = Benef.Apelido;
                            tbCPF_CONJUGE.Text = Benef.Cpf;
                            rblSEXO_CONJUGE.SelectedValue = Benef.Sexo;
                            ddlUFNASC_CONJUGE.SelectedValue = Benef.Uf_Nasc;
                            BiblioSERIX.PreencherDdl(ref ddlMUNNASC_CONJUGE, CMunicipios.ObterPorUF(Benef.Uf_Nasc, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                            ddlMUNNASC_CONJUGE.SelectedValue = Benef.Munic_Nasc;
                            ddlMUNNASC_CONJUGE.Enabled = true;
                            ddlESCOLARIDADE_CONJUGE.SelectedValue = Benef.Escolaridade;
                            tbRG_CONJUGE.Text = Benef.Rg;

                        }
                    }
                    else
                    {
                        lblMensagem.Text = "CPF INVALIDO.";
                        txtCpf.Text = "";
                    }
                }
            }          
        }   

        protected void gvBensBenef_RowEditing(object sender, GridViewEditEventArgs e)
        {

        }

        protected void ddlUf_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlMunicipioNas.Enabled = true;
            BiblioSERIX.PreencherDdl(ref ddlMunicipioNas, CMunicipios.ObterPorUF(ddlUf.SelectedItem.Text, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
        }

        protected void ddlUFNASC_CONJUGE_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlMUNNASC_CONJUGE.Enabled = true;
            BiblioSERIX.PreencherDdl(ref ddlMUNNASC_CONJUGE, CMunicipios.ObterPorUF(ddlUFNASC_CONJUGE.SelectedItem.Text, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
        }

        protected void ddlMunicipioRes_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlComunidade.Enabled = true;
            BiblioSERIX.PreencherDdl(ref ddlComunidade, CComunidades.ObterPorIDT_MUN(ddlMunicipioRes.SelectedValue, UsuAut.Login), "NOME_COM", "IDT_COM");
        }

        protected void ddlMunicipioCom_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlComunidadeCom.Enabled = true;
            BiblioSERIX.PreencherDdl(ref ddlComunidadeCom, CComunidades.ObterPorIDT_MUN(ddlMunicipioRes.SelectedValue, UsuAut.Login), "NOME_COM", "IDT_COM");
        }

        protected void ddlEstadoCivil_SelectedIndexChanged(object sender, EventArgs e)
        {
            VerificaEstadoCivil();
        }               

        private void VerificaEstadoCivil()
        {
            switch (ddlEstadoCivil.SelectedValue)
            {
                case "C":
                    {
                        TabConjuge.Visible = true;
                        break;
                    }
                case "U":
                    {
                        TabConjuge.Visible = true;
                        break;
                    }
                case "V":
                    {
                        TabConjuge.Visible = false;
                        break;
                    }
                case "S":
                    {
                        TabConjuge.Visible = false;
                        break;
                    }
                default:
                    {
                        TabConjuge.Visible = false;
                        break;
                    }
            }
        }

        protected void tbCPF_CONJUGE_TextChanged(object sender, EventArgs e)
        {
            if (tbNOME_CONJUGE.Text == "")
            {
                if (tbCPF_CONJUGE.Text != txtCpf.Text)
                {
                    CConjuge dao = CConjuge.PesquisarPorCPF(tbCPF_CONJUGE.Text, UsuAut.Login);

                    //Já existe esse Conjuge cadastrado?
                    if (dao.Idt_conjuge != null && dao.Status == "I")
                    {
                        ViewState["idt_conjuge"] = dao.Idt_conjuge;
                        tbAPELIDO_CONJUGE.Text = dao.Apelido_conjuge;
                        tbDATANASC_CONJUGE.Text = dao.DataNasc_conjuge;
                        tbNOME_CONJUGE.Text = dao.Nome_conjuge;
                        tbRG_CONJUGE.Text = dao.RG_conjuge;
                        ddlESCOLARIDADE_CONJUGE.SelectedValue = dao.Escolaridade_conjuge;
                        ddlUFNASC_CONJUGE.SelectedValue = dao.UFNasc_conjuge;
                        ddlMUNNASC_CONJUGE.Enabled = true;
                        BiblioSERIX.PreencherDdl(ref ddlMUNNASC_CONJUGE, CMunicipios.ObterPorUF(dao.UFNasc_conjuge, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                        ddlMUNNASC_CONJUGE.SelectedValue = dao.MunNasc_conjuge;
                        rblSEXO_CONJUGE.SelectedValue = dao.Sexo_conjuge;
                    }
                    else if (dao.Idt_conjuge == null)
                    {
                        //CPF Válido?
                        if (Biblio.ValidaCPF(tbCPF_CONJUGE.Text))
                        {   //Jà tem cadastro de beneficiario para esse conjuge?
                            CBeneficiarios obj = CBeneficiarios.PesquisarCpf(tbCPF_CONJUGE.Text, UsuAut.Login);
                            if (obj.Idt_benef != null && obj.Cpf != dao.CPF_conjuge)
                            {
                                //tbCPF_CONJUGE.Text = obj.Cpf;
                                tbAPELIDO_CONJUGE.Text = obj.Apelido;
                                tbDATANASC_CONJUGE.Text = obj.Dat_nasc;
                                tbNOME_CONJUGE.Text = obj.Nom_benef;
                                tbRG_CONJUGE.Text = obj.Rg;
                                ddlESCOLARIDADE_CONJUGE.SelectedValue = obj.Escolaridade;
                                ddlUFNASC_CONJUGE.SelectedValue = obj.Uf_Nasc;
                                ddlMUNNASC_CONJUGE.Enabled = true;
                                BiblioSERIX.PreencherDdl(ref ddlMUNNASC_CONJUGE, CMunicipios.ObterPorUF(obj.Uf, UsuAut.Login), "MUNICIPIO", "MUNICIPIO");
                                ddlMUNNASC_CONJUGE.SelectedValue = obj.Munic_Nasc;
                                rblSEXO_CONJUGE.SelectedValue = obj.Sexo;

                            }
                            else
                            {
                                ZerarCamposConjuge();
                            }
                        }
                        else
                        {
                            lblMensagem.Text = "Erro: Digite um CPF valido.";
                            ZerarCamposConjuge();
                            tbCPF_CONJUGE.Text = "";
                        }
                    }

                }
                else
                {
                    lblMensagem.Text = "Erro: CPF do Conjuge igual ao do beneficiario.";
                    ZerarCamposConjuge();
                    tbCPF_CONJUGE.Text = "";
                }
            }
        }

        private void ZerarCamposConjuge()
        {
            tbAPELIDO_CONJUGE.Text = "";
            tbDATANASC_CONJUGE.Text = "";
            tbNOME_CONJUGE.Text = "";
            tbRG_CONJUGE.Text = "";
            ddlESCOLARIDADE_CONJUGE.SelectedIndex = 0;
            ddlUFNASC_CONJUGE.SelectedIndex = 0;
            rblSEXO_CONJUGE.SelectedIndex = 0;
        }

        protected void GridMaquinas_DataBound(object sender, EventArgs e)
        {
            if (_operacao.Equals("U"))
            {
                CarregarGrid(ref GridMaquinas,false);
            }
            else if (_operacao.Equals("E"))
            {
                CarregarGrid(ref GridMaquinas, true);
            }
        }

        protected void GridBens_DataBound(object sender, EventArgs e)
        {
            if (_operacao.Equals("U"))
            {
                CarregarGrid(ref GridBens,false);
            }
            else if (_operacao.Equals("E"))
            {
                CarregarGrid(ref GridBens, true);
            }
        }

        /// <summary>
        /// Carregar os dados nas Grids de Bens do Beneficiario.
        /// </summary>
        /// <param name="Grid">Referencia da GridView</param>
        /// <param name="Evolucao">Indica se é Evolução</param>
        private void CarregarGrid(ref GridView Grid, bool Evolucao)
        {
            string idt = "";
            if (Evolucao)
            {
                idt = Criptografia.Descriptografar(Request["evolucao"].ToString());
            }
            else
            {
                idt = _idt;
            }
            DataTable dt = CBensBeneficiarios.PesquisarPorIdt(idt, UsuAut.Login, Evolucao);
            int linhas = Grid.Rows.Count;
            int linhasdt = dt.Rows.Count;

            for (int i = 0; i < linhas; i++)
            {
                int aux = int.Parse(Grid.DataKeys[i]["IDT_DESC"].ToString());

                for (int j = 0; j < linhasdt; j++)
                {
                    int aux2 = int.Parse(dt.Rows[j]["IDT_DESC"].ToString());
                    if (aux == aux2)
                    {
                        ((CheckBox)Grid.Rows[i].Cells[0].Controls[0]).Checked = true;
                        ((TextBox)Grid.Rows[i].Cells[2].Controls[0]).Text = dt.Rows[j]["QUANT_BENEF"].ToString();
                    }
                }
            }
        }

        private void BensBeneficiario(string TPO_VINC, ref GridView Grid, bool Evolucao, string idt_evolucao)
        {
            DataTable DT = CBensBeneficiarios.ObterTodos(UsuAut.Login);
            foreach(GridViewRow row in Grid.Rows)
            {
                string idt_benef = _idt;
                string tpo_vinc = TPO_VINC;
                string idt_desc = Grid.DataKeys[row.RowIndex]["IDT_DESC"].ToString();
                string ano = DateTime.Now.Year.ToString();
                string quantidade = ((TextBox)Grid.Rows[row.RowIndex].Cells[2].Controls[0]).Text;
                string nome = CDescricoesOpcoes.PesquisaporCodigo(idt_desc, UsuAut.Login).Descricao;
                CBensBeneficiarios Bens = new CBensBeneficiarios("0", idt_benef, idt_desc, quantidade, ano, tpo_vinc, nome, "", "");
                if (Evolucao)
                {
                    if (((CheckBox)Grid.Rows[row.RowIndex].Cells[0].Controls[0]).Checked == true)
                    {
                        Bens.Idt_Evolucao = idt_evolucao;
                        Bens.Incluir(usuAut.Login, true);
                    }
                }
                else
                {
                    if (((CheckBox)Grid.Rows[row.RowIndex].Cells[0].Controls[0]).Checked == true)
                    {

                        int max = DT.Rows.Count;
                        int aux = 0;
                        for (int j = 0; j < max; j++)
                        {
                            if (DT.Rows[j][2].ToString() == idt_desc)
                            {
                                aux += 1;
                            }
                        }
                        if (aux != 0)
                        {
                            Bens.Idt_Bens_Benef = CBensBeneficiarios.PesquisarPorIdtDesc(Bens.Idt_desc, UsuAut.Login).Idt_Bens_Benef;
                            Bens.Alterar(UsuAut.Login, "Q");
                        }
                        else
                        {
                            Bens.Idt_Bens_Benef = CBensBeneficiarios.ObterIdt();
                            Bens.Incluir(UsuAut.Login, false);
                        }


                    }
                    else
                    {

                        int max = DT.Rows.Count;
                        int aux = 0;
                        for (int j = 0; j < max; j++)
                        {
                            if (DT.Rows[j][2].ToString() == idt_desc)
                            {
                                aux += 1;
                            }
                        }
                        if (aux != 0)
                        {
                            Bens.Data_fim = DateTime.Now.ToString();
                            Bens.User_fim = UsuAut.Login;
                            Bens.Alterar(UsuAut.Login, "D");
                            ((TextBox)Grid.Rows[row.RowIndex].Cells[2].Controls[0]).Text = "";
                        }
                    }
                }
            }
        }

        protected void txtDataNasc_TextChanged(object sender, EventArgs e)
        {
            DateTime tb = Convert.ToDateTime(txtDataNasc.Text);
            if (tb > DateTime.Now)
            {
                txtDataNasc.Text = "";
                lblMensagem.Text = "Data Invalida";
            }
        }

        protected void txtDatainicio_TextChanged(object sender, EventArgs e)
        {
            int tb = int .Parse(txtDatainicio.Text);
            if (tb > DateTime.Now.Year)
            {
                lblMensagem.Text = "Ano da primeira assistencia invalido.";
                txtDatainicio.Text = "";
            }
        }

        protected void txtDatAssist_TextChanged(object sender, EventArgs e)
        {
            if(txtDatAssist.Text != "__/__/____")
            {
                DateTime tb = Convert.ToDateTime(txtDatAssist.Text);
                if (tb > DateTime.Now)
                {
                    lblMensagem.Text = "Data Inválida.";
                    txtDatAssist.Text = "";
                }
            }
        }
    }
}
